/*
** Xin YUAN, 2023, BSD (2)
*/

////////////////////////////////////////////////////////////////////////////////
#ifndef __CTL_CS_H__
#define __CTL_CS_H__
////////////////////////////////////////////////////////////////////////////////

#ifndef __CTL_COLLB_H__
	#error cs.h requires collb.h to be included first.
#endif

#ifndef __CTL_SOCKET_H__
	#error cs.h requires socket.h to be included first.
#endif

#ifndef __CTL_SYNC_H__
	#error cs.h requires sync.h to be included first.
#endif

#include "_system_/cs_impl.h"

////////////////////////////////////////////////////////////////////////////////
namespace CTL {
////////////////////////////////////////////////////////////////////////////////

//HandleDataBase
/*! \brief A base class for managing per-handle data.

A base class for managing per-handle data.
*/
typedef handle_data_base  HandleDataBase;

//ClientImpl<T>
template <class T>
using ClientImpl = client_impl<T>;

//GetProcessorNumber
inline uint32_t GetProcessorNumber() noexcept
{
	return get_processor_number();
}

//HandleServerDataBase
//  If recv_len == 0, user must close it.
//  Do not send data from many objects of handle_server_data_base to one handle_server_data_base object.
typedef handle_server_data_base  HandleServerDataBase;

//ServerImpl<T>
template <class T>
using ServerImpl = server_impl<T>;

////////////////////////////////////////////////////////////////////////////////
}
////////////////////////////////////////////////////////////////////////////////
#endif
////////////////////////////////////////////////////////////////////////////////
